package com.sg.dto.biz.app.req;

import com.sg.dto.base.app.common.VirtualOrgMemberDto;
import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * @desc ImplementAcceptFieldUseWorkTaskReqDto
 * @使用场景
 */
@Data
public class ImplementAcceptFieldUseWorkTaskReqDto
        extends BaseDto
        implements Serializable {

    /**
     * 身份人员ID
     */
    @NotNull(message = "身份人员ID不能为空")
    @ApiModelProperty("身份人员ID")
    private String originalRoleMemberId;

    /**
     * 就职记录ID
     */
    @NotNull(message = "就职记录ID不能为空")
    @ApiModelProperty("就职记录ID")
    private String inductionRecordId;

    /**
     * 自定义字段1
     */
    @NotNull(message = "自定义字段1不能为空")
    @ApiModelProperty("自定义字段1")
    private String customField1;

    /**
     * 自定义字段2
     */
    @NotNull(message = "自定义字段2不能为空")
    @ApiModelProperty("自定义字段2")
    private String customField2;
    /**
     * 角色标识
     */
    @NotNull(message = "角色标识不能为空")
    @ApiModelProperty("角色标识")
    private String roleCode;
    /**
     * 是否 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否不能为空")
    @ApiModelProperty("是否")
    private String tureOrFalse;
    /**
     * 自定义字段3
     */
    @NotNull(message = "自定义字段3不能为空")
    @ApiModelProperty("自定义字段3")
    private String customField3;

    /**
     * 自定义字段4
     */
    @NotNull(message = "自定义字段4不能为空")
    @ApiModelProperty("自定义字段4")
    private String customField4;

    /**
     * 自定义字段5
     */
    @NotNull(message = "自定义字段5不能为空")
    @ApiModelProperty("自定义字段5")
    private String customField5;

    /**
     * 自定义字段6
     */
    @NotNull(message = "自定义字段6不能为空")
    @ApiModelProperty("自定义字段6")
    private String customField6;
    /**
     * 自定义字段7
     */
    @NotNull(message = "自定义字段7不能为空")
    @ApiModelProperty("自定义字段7")
    private String customField7;

    /**
     * 自定义字段8
     */
    @NotNull(message = "自定义字段8不能为空")
    @ApiModelProperty("自定义字段8")
    private String customField8;

    /**
     * 自定义字段9
     */
    @NotNull(message = "自定义字段9不能为空")
    @ApiModelProperty("自定义字段9")
    private String customField9;

    /**
     * 自定义字段10
     */
    @NotNull(message = "自定义字段10不能为空")
    @ApiModelProperty("自定义字段10")
    private String customField10;

    /**
     * 自定义字段11
     */
    @NotNull(message = "自定义字段11不能为空")
    @ApiModelProperty("自定义字段11")
    private String customField11;

    /**
     * 自定义字段12
     */
    @NotNull(message = "自定义字段12不能为空")
    @ApiModelProperty("自定义字段12")
    private String customField12;
    /**
     * 发送消息场景 AUTO_GEN_REPORT_TASK_SUB:自动生成汇报任务（待汇报） SUB_REPORT_TASK_SUB_TO_EVA:提交汇报任务（待汇报转评价中） SUB_REPORT_TASK_SUB_TO_EXA:提交汇报任务（待汇报转审核中） SUB_REPORT_TASK_SUB_TO_SUC:提交汇报任务（待汇报转已成功） REMIND_REPORT_TASK:提醒汇报 EVA_REPORT_TASK_EVA_TO_EXA:评价汇报任务（评价中转审核中） EVA_REPORT_TASK_EVA_TO_SUC:评价汇报任务（评价中转已成功） EXA_REPORT_TASK_EXA_TO_SUC:审核汇报任务（审核中转已成功） EXA_REPORT_TASK_EXA_TO_FAIL:审核汇报任务（审核中转已失败） AUTO_ANA_SUBMIT_TO_OVERDUE:自动分析逾期任务（待汇报转已逾期） AUTO_ANA_EVA_TO_OVERDUE:自动分析逾期任务（评价中转已逾期） AUTO_ANA_EXA_TO_OVERDUE:自动分析逾期任务（审核中转已逾期） AUTO_ANA_OVERDUE_TO_FAIL:自动分析失败任务（已逾期转已失败） CANCEL_REPORT_TASK_EVA_TO_SUB:撤销汇报任务（评价中转待汇报） CANCEL_REPORT_TASK_EXA_TO_SUB:撤销汇报任务（审核中转待汇报） REJECT_REPORT_TASK_EVA_TO_SUB:驳回任务（评价中转待汇报） REJECT_REPORT_TASK_EXA_TO_SUB:驳回任务（审核中转待汇报） ARRANGE_WORK_TASK_TOBESIGN:安排工作任务（待签收） ARRANGE_WORK_TASK_ONGOING:安排工作任务（进行中） ARRANGE_WORK_TASK_NOT_AT_THE:安排工作任务（未开始） CFM_REC_WORK_TASK_SIGN:确认签收工作任务（已签收） AUTO_ANA_WORK_TASK_NOT_AT_THE_TO_ONGOING:自动分析进行中工作任务（未开始转进行中） AUTOMATIC_ANALYSIS_OF_UPCOMING_OVERDUE_WORK_TASKS:自动分析即将逾期工作任务（进行中） ADVANCE_WORK_TASK_NOT_AT_THE_TO_ONGOING:工作任务人工提前开始（未开始转进行中） AUTO_ANA_WORK_TASK_ONGOING_TO_OVERDUE:自动分析逾期工作任务（进行中转已逾期） UPDATE_WORK_TASK_ONGOING_TO_SUC:更新工作任务（进行中转已成功） CANCLE_WORK_TASK_NOT_AT_THE_TO_FAIL:撤销工作任务（未开始转已失败） CANCLE_WORK_TASK_ONGOING_TO_FAIL:撤销工作任务（进行中转已失败） VOID_WORK_TASK_ONGOING_TO_FAIL:作废工作任务（进行中转已失败） VOID_WORK_TASK_OVERDUE_TO_FAIL:作废工作任务（已逾期转已失败） AUTO_ANA_WORK_TASK_ONGOING_TO_FAIL:自动分析失败工作任务（进行中转失败） CREATE_PROBLEM:发起问题（待解决） UPDATE_WORK_TASK_OVERDUE_TO_SUC:更新工作任务（已逾期转已成功） AUTO_ANA_WORK_TASK_OVERTIME:自动分析超时问题（已超时） UPDATE_WORK_TASK_ONGOING:更新工作任务（进行中） SOLVE_PROBLEM_SHE_TO_QTA:问题转待解决（已搁置转待解决） SOLVE_PROBLEM_SUS_TO_QTA:问题转待解决（已挂起转待解决） REJECTED_PROBLEM_QTA_TO_REJ:问题设拒绝（待解决转已拒绝） CLOSED_PROBLEM_QTA_TO_CLS:问题设关闭（待解决转已关闭） CLOSED_PROBLEM_SHE_TO_CLS:问题设关闭（已搁置转已关闭） CLOSED_PROBLEM_SUS_TO_CLS:问题设关闭（已挂起转已关闭） RESOLVED_PROBLEM_QTA_TO_RES:问题设解决（待解决转已解决） REMIND_SIGN_WORK_TASK:提醒签收工作任务 REMIND_HANDLE_WORK_TASK:督办工作任务 GENERATE_REPORT_TASK_PROBLEM:提交汇报任务问题 ISSUE_TARGET:下发目标 CFM_REC_PRIMARY_OBJECTIVE:确认签收一级指标 CFM_REC_SECOND_ABOVE_OBJECTIVE:确认签收二级及以上指标 REMIND_HANDLE_PRIMARY_DEPT_ARRANGE:督办一级部门目标安排 REMIND_HANDLE_SECOND_ABOVE_DEPT_ARRANGE:督办二级及以上部门目标安排 AUTO_ANA_SUB_REPORT_TASK_WILL_OVERDUE:自动分析即将逾期任务（待汇报） AUTO_ANA_EVA_REPORT_TASK_WILL_OVERDUE:自动分析即将逾期任务（评价中） AUTO_ANA_EXA_REPORT_TASK_WILL_OVERDUE:自动分析即将逾期任务（审核中） REVIEW_AND_SUBMIT_THREE_BUSINESS_MESSAGES:审核提交三条业务消息 UPDATE_TARGET_VALUE:修改目标值 ISSUE_TARGET:下发目标 CFM_REC_PRIMARY_OBJECTIVE:确认签收一级指标 CFM_REC_SECOND_ABOVE_OBJECTIVE:确认签收二级及以上指标 REMIND_HANDLE_PRIMARY_DEPT_ARRANGE:督办一级部门目标安排 REMIND_HANDLE_SECOND_ABOVE_DEPT_ARRANGE:督办二级及以上部门目标安排 ISSUE_OFFICIAL_DOC_SEND_EVERYONE:下发公文给所有人 ISSUE_OFFICIAL_DOC_SEND_DEPT:下发公文给部门 ISSUE_OFFICIAL_DOC_SEND_PERSON:下发公文给个人 ISSUE_NOTIFICATION_SEND_EVERYONE:下发通知给所有人 ISSUE_NOTIFICATION_SEND_DEPT:下发通知给部门 ISSUE_NOTIFICATION_SEND_PERSON:下发通知给个人 ISSUE_OFFICIAL_DOC_WORK_TASK_ARRANGE:下发公文工作任务安排 URGE_ISSUE_OFFICIAL_DOC_WORK_TASK_ARRANGE:催办公文工作任务安排 ASK_MY_COPYWRITER_ASSISTANT:提问我的文案助手 INITIATE_INDEPENDENT_THIRD_PARTY_QA:发起独立第三方问答 IMPLEMENT_THIRD-PARTY_INTELLIGENT_ANSWER:执行第三方智能回答 MY_INTELLIGENT_QA:我的智能问答
     */
    @NotNull(message = "发送消息场景不能为空")
    @ApiModelProperty("发送消息场景")
    private String sendMsgScene;

    /**
     * 发消息及实时更新消息数量 SEND_MSG:发消息 2:更新状态消息数量及推 topic 3:更新状态数量及发消息
     */
    @NotNull(message = "发消息及实时更新消息数量不能为空")
    @ApiModelProperty("发消息及实时更新消息数量")
    private String sendMsgAndUpdateMsgCount;
    /**
     * 完成情况 AHEAD_SCHEDULE:提前完成（提前24h） NORMAL_COMPLETE:正常完成 OVERDUE_COMPLETE:逾期完成
     */
    @NotNull(message = "完成情况不能为空")
    @ApiModelProperty("完成情况")
    private String completeStatus;

    /**
     * 结束时间偏差天数
     */
    @NotNull(message = "结束时间偏差天数不能为空")
    @ApiModelProperty("结束时间偏差天数")
    private Long deflectionEndDays;
    /**
     * 自定义字段13
     */
    @NotNull(message = "自定义字段13不能为空")
    @ApiModelProperty("自定义字段13")
    private String customField13;

    /**
     * 自定义字段14
     */
    @NotNull(message = "自定义字段14不能为空")
    @ApiModelProperty("自定义字段14")
    private String customField14;
    /**
     * 是否已处理 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否已处理不能为空")
    @ApiModelProperty("是否已处理")
    private String isHandle;
    /**
     * 通用数值字段1（整数型）
     */
    @NotNull(message = "通用数值字段1（整数型）不能为空")
    @ApiModelProperty("通用数值字段1（整数型）")
    private Long comNumField1;

    /**
     * 通用数值字段2（整数型）
     */
    @NotNull(message = "通用数值字段2（整数型）不能为空")
    @ApiModelProperty("通用数值字段2（整数型）")
    private Long comNumField2;
    /**
     * 发送消息技术模型 AUTO_ANALYZE_SEND_PRINCIPAL:自动分析发送负责人 LABOUR_SEND_EVALUATOR:人工发送评价人 LABOUR_SEND_DIRECTOR:人工发送主管 LABOUR_SEND_DIRECTOR_DIVISION_LABOUR:人工发送主管、分工者 LABOUR_SEND_DIVISION_LABOUR:人工发送分工者 LABOUR_SEND_PRINCIPAL_DIVISION_LABOUR:人工发送负责人、分工者 AUTO_ANALYZE_SEND_PRINCIPAL_DIRECTOR_DIVISION_LABOUR:自动分析发送负责人、主管、分工者 LABOUR_SEND_NULL:人工发送 无 LABOUR_SEND_PRINCIPAL:人工发送负责人 LABOUR_SEND_DIRECTOR_DEPT_LEADER:人工发送主管、分管领导 AUTO_ANALYZE_SEND_PRINCIPAL_DIRECTOR_DEPT_LEADER:自动分析发送负责人、主管、分管领导 LABOUR_SEND_PRINCIPAL_DIRECTOR_DEPT_LEADER:人工发送负责人、主管、分管领导 AUTO_ANALYZE_SEND_PRINCIPAL_CREATOR:自动分析发送负责人、发起人 LABOUR_SEND_PRINCIPAL_CREATOR:人工发送负责人、发起人
     */
    @ApiModelProperty("发送消息技术模型")
    private String sendMsgTechnologyMode;

    /**
     * 消息模板标识
     */
    @ApiModelProperty("消息模板标识")
    private String messageTemplateCode;

    /**
     * 消息标题模板引擎标识
     */
    @ApiModelProperty("消息标题模板引擎标识")
    private String msgTitleTemplateSemanticEngineCode;

    /**
     * 处理类型 NO_NEED_HANDLING:不需要处理 NEED_HANDLING:需要处理 NEED_BUSINESS_OPERATION_HANDLING:需要业务操作处理
     */
    @ApiModelProperty("处理类型")
    private String handleType;

    /**
     * 消息重要紧急度层级
     */
    @ApiModelProperty("消息重要紧急度层级")
    private Long messageImportantLevel;
    /**
     * 协同内容类型编码 ORG_OR_DEPT:组织或部门 INTELLIGENT_HARDWARE_EQUIPMENT:智能硬件设备 OMS_TARGET_CYCLE:目标周期表 OMS_EVALUATION_OBJECT_TARGET_CYCLE:被评对象目标周期表 OMS_TARGET:目标表 OMS_TARGET_CATEGORY:目标分类表 OMS_TARGET_OBJECTIVE:指标表 OMS_TASK:任务表 OMS_ORG_INDUCTION_RECORD:就职记录表 OMS_FRAMEWORK_ORIGINAL_ROLE_MEMBER:身份人员表 OMS_ORG_DEPT:部门表 OMS_BASE_HOST:宿主表 OMS_FRAMEWORK_SPACE:空间表 OMS_TSPE_CYCLE_STAGE_DATA:周期阶段资料记录 OMS_EVALUATION_TEMPLATE:评价模板 OMS_EVALUATION_PORTRAIT:评价画像表 OMS_ORG_POSITION:职务表 OMS_VIRTUAL_ORG_MEMBER:虚拟组织成员表 OMS_PLANNING:规划资料表 OMS_FRAMEWORK_USERS:个人账号表 OMS_EXECUTE_CYCLE_STAGE:执行周期阶段表 OMS_CONF_SCHEME:配置方案表 OMS_EVA_OBJ_TARGET_CYCLE_OSET:被评对象目标周期目标设置表 OMS_EVA_OBJ_TARGET_CYCLE_WEIGHT_SET:被评对象目标周期权重设置表 OMS_NOTICE:通知公告表 OMS_CYCLE:周期表 OMS_EVALUATION_SUBJECT:评价主题表 OMS_BIZ_APP_BATCH:业务应用批次表 OMS_EVA_BATCH_RELATED_SET:评价模板批次相关设置表 OMS_TARGET_CYCLE_PLAN_SET:目标周期规划设置表 OMS_TARGET_OBJECTIVE_PLAN_EXTEND:指标扩展规划设置表 OMS_MESSAGE_CHANNEL:通道表 OMS_ORG_ORGANIZATION:组织表 OMS_PROJECT:项目表 OMS_ORG_DEPT:部门表 OMS_QUESTION:问题表 OMS_OFFICIAL_DOCUMENT:公文表 OMS_VIRTUAL_ORG:虚拟组织表
     */
    @NotNull(message = "协同内容类型编码不能为空")
    @ApiModelProperty("协同内容类型编码")
    private String cooperateContentTypeCode;
    /**
     * 协同内容ID
     */
    @NotNull(message = "协同内容ID不能为空")
    @ApiModelProperty("协同内容ID")
    private String cooperateContentId;

    /**
     * 协同内容名称
     */
    @NotNull(message = "协同内容名称不能为空")
    @ApiModelProperty("协同内容名称")
    private String surfaceContName;
    /**
     * 媒介类型 VIDEO:视频 AUDIO:音频 FILE:文件 PIC:图片
     */
    @NotNull(message = "媒介类型不能为空")
    @ApiModelProperty("媒介类型")
    private String mediaType;

    /**
     * 媒介地址
     */
    @NotNull(message = "媒介地址不能为空")
    @ApiModelProperty("媒介地址")
    private String mediaAddress;
    /**
     * 冗余内容表主键ID
     */
    @NotNull(message = "冗余内容表主键ID不能为空")
    @ApiModelProperty("冗余内容表主键ID")
    private String entityId;

    /**
     * 虚拟组织使用场景 TARGET_PLAN_SCENE:目标规划场景 WORK_TASK_SCENE:工作任务场景
     */
    @NotNull(message = "虚拟组织使用场景不能为空")
    @ApiModelProperty("虚拟组织使用场景")
    private String useScene;
    @ApiModelProperty("虚拟组织成员列表")
    private List<VirtualOrgMemberDto> virtualOrgMemberList = new ArrayList<>();
    /**
     * 问题状态名称
     */
    @NotNull(message = "问题状态名称不能为空")
    @ApiModelProperty("问题状态名称")
    private String questionStatusName;
    /**
     * 状态业务操作类型 AUTO_ORDER:状态自动更新指令 ARRANGE_SIGN_WORK_TASK:安排待签收工作任务 ARRANGE_NO_SIGN_WORK_TASK:安排无需签收工作任务 CONFIRM_SIGN_WORK_TASK:确认签收工作任务 UPDATE_WORK_TASK_DONE:更新进度 100 完成工作任务 UPDATE_WORK_TASK_SCHEDULE:更新工作任务进度小于100 LABOUR_VOID_WORK_TASK:人工作废工作任务 WORK_TASK_LABOR_ADVANCE_START:工作任务人工提前开始 WORK_TASK_LABOR_DELAY_START:工作任务人工延后开始 AUTO_ANA_NOT_AT_THE_REPORT_TASK_ONG:自动分析待汇报任务（未开始转进行中） AUTO_GEN_REPORT_TASK:自动生成汇报任务（待汇报-空转未开始） AUTO_GEN_REPORT_TASK_ONGOING:自动生成汇报任务（待汇报-空转进行中） AUTO_ANA_SUBMIT_TO_SUC:自动分析进行中汇报任务（待汇报转已成功） SUB_REPORT_TASK_SUB_TO_EVA:提交汇报任务（待汇报转评价中） SUB_REPORT_TASK_SUB_TO_EXA:提交汇报任务（待汇报转审核中） SUB_REPORT_TASK_SUB_TO_SUC:提交汇报任务（待汇报转已成功） CANCEL_REPORT_TASK_EVA_TO_SUB:撤销汇报任务（评价中转待汇报） CANCEL_REPORT_TASK_EXA_TO_SUB:撤销汇报任务（审核中转待汇报） REJECT_REPORT_TASK_EVA_TO_SUB:驳回任务（评价中转待汇报） REJECT_REPORT_TASK_EXA_TO_SUB:驳回任务（审核中转待汇报） SUB_REPORT_TASK_SUB_OVERDUW_TO_SUC:提交汇报任务（已逾期转已成功） EVA_REPORT_TASK_EVA_TO_EXA:评价汇报任务（评价中转审核中） EVA_REPORT_TASK_EVA_TO_SUC:评价汇报任务（评价中转已成功） EXA_REPORT_TASK_EXA_TO_SUC:审核汇报任务（审核中转已成功） EXA_REPORT_TASK_EXA_TO_FAIL:审核汇报任务（审核中转已失败） INITIATE_QUESTION_QUESTIONABILITY:发起问题待解决 EXA_REPORT_TASK_EXA_TO_FAIL:审核汇报任务（审核中转已失败） AUTO_ANA_SUBMIT_TO_OVERDUE:自动分析逾期任务（待汇报转已逾期） AUTO_ANA_EVA_TO_OVERDUE:自动分析逾期任务（评价中转已逾期） AUTO_ANA_EXA_TO_OVERDUE:自动分析逾期任务（审核中转已逾期） AUTO_ANA_OVERDUE_TO_FAIL:自动分析失败任务（已逾期转已失败） LABOUR_SHELVE_QUESTION:人工暂搁置问题 LABOUR_REJECTED_QUESTION:人工拒绝问题 LABOUR_SUSPENDED_QUESTION:人工挂起问题 LABOUR_CLOSED_QUESTION:人工关闭问题 LABOUR_CHANGE_QUESTIONABILITY_QUESTION:人工转问题待解决 LABOUR_RESOLVED_QUESTION:人工解决问题 QUESTION_AUTO_ORDER:问题自动更新指令 LABOUR_CHANGE_QUESTIONABILITY_OVERTIME_QUESTION:人工转超时问题待解决 SOLVE_PROBLEM_QTA_TO_OTHER:待解决或已超时问题转其他状态 OTHER_STATUS_PROBLEM_TO_SOLVE:其他状态问题转待解决
     */
    @NotNull(message = "状态业务操作类型不能为空")
    @ApiModelProperty("状态业务操作类型")
    private String statusBizOptType;
    /**
     * 虚拟组织成员ID
     */
    @ApiModelProperty("虚拟组织成员ID")
    private String virtualOrgMemberId;

    /**
     * 虚拟组织成员就职记录ID
     */
    @ApiModelProperty("虚拟组织成员就职记录ID")
    private String virtualOrgInductionRecordId;

}
